<div>
<input data-content="This is a text string with a <br /> inside of it" />
</div>
我需要一个正则表达式来查找输入标记的data-attribute标记内的所有<br />
标记。
注意:页面中可能有其他<br />
标记(属性之外),我不想包含这些标记,因此正则表达式只应该在数据内容属性。
谢谢!
答案 0 :(得分:1)
我认为你不需要,也不应该使用正则表达式。目前还不清楚你想用找到的换行符做什么,但是这应该给你一个解析器的起点。
$string = '<div>
<input data-content="This is a text string with a <br /> inside of it" />
</div>';
$doc = new DOMDocument();
$doc->loadHTML($string);
$inputs = $doc->getElementsByTagName('input');
foreach($inputs as $input) {
preg_match_all('/<br\h*\/?>/', $input->getAttribute('data-content'), $linebreaks);
print_r($linebreaks);
}
取决于您想要做什么preg_match_all
可能需要也可能不需要。这一点的重要部分是$input->getAttribute('data-content')
将为您提供所需数据/属性的字符串。
答案 1 :(得分:-1)
我在评论部分发出警告,您可以使用preg_replace_callback()
和str_replace()
的组合:
$str = '<input data-content="This is a text string with a <br /> inside of it" />';
$regex = '/data-content="([^"]*)/i';
$str = preg_replace_callback($regex,
function($matches) {
return str_replace(array('<br/>', '<br />'), '', $matches[0]);
},
$str);
echo $str;
// output: <input data-content="This is a text string with a inside of it" />
它是做什么的:在data-content
之后用双引号匹配所有内容并将其替换为<br/>
的变体。
再一次,最好使用解析器或xpath
方法(在这里看看,有很多好的答案)。
答案 2 :(得分:-4)
试试这个正则表达式'/data-content=\".*<br\s?\/?>.*\"/imsU'