我正在寻找一种去除所有锚标签的方法,我也希望删除从','到<br>
的所有内容,但<br>
应保持不变。
脏输入:
Abstractor HLTH<br>
Account Representative, Major <a href="#P">P</a><br>
Accountant <a href="#NP">NP</a>, <a href="#M">M</a>, <a href="#REA">REA</a>, <a href="#SKI">SKI</a><br>
应该是这样的:
Abstractor HLTH<br>
Account Representative<br>
Accountant <br>
请帮忙!
- 以下是脏文:
$str = sprintf('
Abstractor HLTH<br>
Account Representative, Major <a href="#P">P</a><br>
Accountant <a href="#NP">NP</a>, <a href="#M">M</a>, <a href="#REA">REA</a>, <a href="#SKI">SKI</a><br>
Accountant, Cost I & II (See Cost Accountant I, II) <a href="#FR">FR</a><br>
Accountant, General <a href="#G">G</a><br>
Accountant, General I (Junior) (See General Accountant) <a href="#FR">FR</a>, <a href="#O/G">O/G</a>, <a href="#W">W</a><br>
Accountant, General II (Intermediate) (See General Accountant) <a href="#FR">FR</a>, <a href="#O/G">O/G</a>, <a href="#W">W</a>, <a href="#HA">HA</a> <br>
Accountant, General III (Senior) (See General Accountant) <a href="#FR">FR</a>, <a href="#O/G">O/G</a>, <a href="#W">W</a> <br>
');
答案 0 :(得分:1)
我强烈建议您使用 HTML Purifier http://htmlpurifier.org/
设置起来相当简单,声誉卓着,功能强大。
答案 1 :(得分:1)
通常使用正则表达式来处理HTML字符串是不好的,但假设您的所有链接都是这样形成的,那么使用preg_replace()
就不会出现问题。试试这个
// Removes all links
$str = preg_replace("/<a href=\"#([A-Z\\/]+?)\">\\1<\\/a>(?:, )?/i", "", $str);
// Strip the comma and everything from the comma
// to the next <br> in the line
$str = preg_replace("/,(.*?)(?=<br>)/i", "", $str);
建议strip_tags()
的其他答案:它不会删除它剥离的一对HTML标记所包含的文本。例如
Accountant <a href="#NP">NP</a>
变为
Accountant NP
这不是OP想要的。
答案 2 :(得分:0)
strip-tags()用于标记str_replace(),strpos()用于其他标记。
答案 3 :(得分:0)
HTML Purifier是你的朋友。它有灵活的选择,非常复杂。使用str_replace或正则表达式执行此类操作错误。
答案 4 :(得分:0)
$clean_string = strip_tags($original_string, '<br>');
这将除去br标签之外的一切。
正如KingCrunch所说,其余为str_replace
和strpos
。
答案 5 :(得分:0)
strip_tags有第二个参数,允许您提供一串允许的标记。除了你提供的标签之外,它将删除所有标签:
$string = strip_tags($string, '<br>'); // will leave <br>-tags in place