我正在尝试分离各个内联脚本标记:
<script>
console.log('hello');
console.log('hi!');
console.log('yo!');
</script>
<script type="text/javascript">
console.log("this is another inline script");
var hi = "cool";
console.log(hi);
</script>
这是我使用的模式:
$scripts = preg_split('#(<script>.*?</script>|<script type="text/javascript>.*?</script>")#', $str);
但是我得到了这个结果:
Array
(
[0] => <script>
console.log('hello');
console.log('hi!');
console.log('yo!');
</script>
<script type="text/javascript">
console.log("this is another inline script");
var hi = "cool";
console.log(hi);
</script>
)
虽然我期望得到这样的结果:
Array
(
[0] => <script>
console.log('hello');
console.log('hi!');
console.log('yo!');
</script>
[1] =>
<script type="text/javascript">
console.log("this is another inline script");
var hi = "cool";
console.log(hi);
</script>
)
我使用的模式有什么问题吗?提前感谢!
使现代化
如果我使用 s
修饰符,我会得到这样的内容:
Array
(
[0] =>
[1] =>
<script type="text/javascript">
console.log("this is another inline script");
var hi = "cool";
console.log(hi);
</script>
)
它设法分离 2 个脚本,但第一个脚本变为空字符串
试试这个:
$str=<<<STR
<script>
console.log('hello');
console.log('hi!');
console.log('yo!');
</script>
<script type="text/javascript">
console.log("this is another inline script");
var hi = "cool";
console.log(hi);
</script>
STR;
$split = preg_split('#(?=<script)#', $str,null,PREG_SPLIT_NO_EMPTY);
var_dump($split);
我将正则表达式更改为:
#(?=<script)#
结果是:
array(2) {
[0]=>
string(93) "<script>
console.log('hello');
console.log('hi!');
console.log('yo!');
</script>
"
[1]=>
string(133) "<script type="text/javascript">
console.log("this is another inline script");
var hi = "cool";
console.log(hi);
</script>"
}
我只是要列出一个清单:
>
.
不匹配换行符,除非使用PCRE_DOTALL(/s
标志)。
对于preg_split
,您还需要preg_split_DELIM_CAPTURE
选项,以便不仅删除匹配的部件。
在您的情况下,您最好使用preg_match_all
而不是preg_split
。
最后,在预料到你的下一个问题时,你的表达与你的来源不符:
...>|<script type="text/javascript>.*?<....
^
总之,最好使用以下内容:
preg_match_all("~( <script[^>]*> (.*?) </script> )~smix", $src, ...
使用regex,我希望能够获得多个html标记之间的文本。这里的HTML只是为了表示输入,我不担心HTML标签,只是想检索HTML标签中的内容(在正确的开始和结束标签之间)。例如,以下内容: 所需输入: 所需输出: 获得的输出: Regex我尝试过: 我没有得到预期的结果。 我的java代码:
我对regexp有问题。 这是一个示例文本:< code > 从这个示例中,我需要提取
问题内容: 我有这个HTML输入: 我想使用正则表达式删除HTML标记,以便输出为: 谁能建议使用正则表达式执行此操作? 问题答案: 您可以使用称为Jericho Html解析器的HTML解析器。 您可以从这里下载-http://jericho.htmlparser.net/docs/index.html Jericho HTML Parser是一个Java库,允许对HTML文档的各个部分(包括服
使用正则表达式,我希望能够获取多个DIV标记之间的文本。例如,以下内容: 将输出: 我使用的正则表达式模式仅匹配我的最后一个div标记并错过了第一个。代码: 输出: 找到的匹配项:1 内部DIV:这是另一个测试
问题内容: 我想在pastebin上将脚本标签从此html中剥离 http://pastebin.com/mdxygM0a 我尝试使用以下正则表达式 但是它不会删除html中的所有脚本标签。它仅删除嵌入式脚本。请我需要一个可以删除所有脚本标签(行内和多行)的正则表达式。如果对我的样本http://pastebin.com/mdxygM0a进行测试,将不胜感激 谢谢 问题答案: 尝试使用正则表达式删
我正在尝试使用一个Java正则表达式来提取数据。它符合我的数据,但我无法得到组数据。我正在尝试获取数据1,xmlAggregator,268803451,3。查看文档,我假设如果在\d+和\w+周围加上(),就会得到组中的数字和字符串。对如何更改正则表达式有什么建议吗? 字符串: Java代码: 输出: 希望得到: