[英]What would be the regex to remove line breaks and all following spaces
我想要實現的是斷言兩個字符串相等而忽略格式
$expected =
'<div class="input select">
<label for="countries">User Country</label>
<select name="countries" id="countries">
<option value="">Select a country</option>
<option value="ger">Germany</option>
<option value="fra">France</option>
<option value="rus" selected="selected">Russia</option>
</select>
</div>';
$actual = '<div class="input select"><label for="countries">User Country</label><select name="countries" id="countries"><option value="">Select a country</option><option value="ger">Germany</option><option value="fra">France</option><option value="rus" selected="selected">Russia</option></select></div>';
$this->assertTextEquals($expected, $actual);
到目前為止,我做到了:
public function assertTextEquals($expected, $actual)
{
$actualNoLineBreaks = preg_replace("/\r|\n/", "", $actual);
$actualNoLongSpaces = preg_replace('!\s+!', ' ', $actualNoLineBreaks);
$expectedNoLineBreaks = preg_replace("/\r|\n/", "", $expected);
$expectedNoLongSpaces = preg_replace('!\s+!', ' ', $expectedNoLineBreaks);
TestCase::assertEquals($expectedNoLongSpaces, $actualNoLongSpaces);
}
但問題是換行符所在的位置仍然存在空格,例如: select"> <label
。
那么去除換行符和所有后續空格(直到第一個非空格字符)的正則表達式是什么?
當然,我可以去掉兩個字符串中的所有空格,但這會使錯誤消息難以閱讀,我正在尋找一個優雅的解決方案。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.