我需要帮助正则表达式在PHP中...“jolly char”在字符串替换中。这是我现在有:PHP:用字符串替换字符串里面的欢乐字符
$String = str_replace('<audio type="soundcloud">'.
'[soundcloud url="https://api.soundcloud.com/tracks/',
'<audio type="soundcloud">', $String);
$String = str_replace(' params="color=ff6600&auto_play=false&'.
'show_artwork=true" width="100%" height="166" iframe="true" /]</audio>',
'</audio>', $String);
输入是:
[soundcloud url="https://api.soundcloud.com/tracks/audio_id" params="color=ff6600&auto_play=false&show_artwork=true" width="100%" height="166" iframe="true" /]
输出是:
<audio type="soundcloud">audio_id</audio>
那没关系只有param
保持不变(我想匹配任何param
值)
现在,我试图用正则表达式来解决它。
这是我想什么来代替:
[soundcloud url="https://api.soundcloud.com/tracks/audio_id" params="*]
...以有这样的:
<audio type="soundcloud">audio_id</audio>
(我不需要保存任何参数,时刻)
所以,我不得不删除PARAMS之间的任何字符=”和]。
有人能帮助我吗? 我保证我会学习,在下一个愚蠢的问题之前! :)
编辑#1:
我为我不清楚的问题道歉,我试图解释它以另一种方式。 这是我在输入:
[soundcloud url="https://api.soundcloud.com/tracks/123456789" params="color=ff6600&auto_play=false&show_artwork=true" width="100%" height="166" iframe="true" /]
这正是我所需要的输出:
<audio type="soundcloud">123456789</audio>
...其中:
- “123456789” 的变化,且必须保存。
- 我必须删除“参数”和“]”(包括)之间的所有文本。
我想我需要的最终标志,所以我必须在正则表达式来写“PARAMS”的地方......
编辑#2:
这是我最后一次尝试:
$String = preg_replace('\<audio type="soundcloud"\>\[soundcloud url=\"https\:\/\/api.soundcloud.com\/tracks\/([^"]+).*.\<\/audio\>', '<audio type="soundcloud">\1</audio>', $String);
...它在regex101.com演示中工作,但它不在我的页面中。
编辑#3:
固定! 当然你的答案是正确的......我在编辑#2中遇到了两个缺少的斜线麻烦!
这是正确的版本:
$String = preg_replace('/\<audio type=\"soundcloud\"\>\[soundcloud url=\"https\:\/\/api.soundcloud.com\/tracks\/([^"]+).*.\<\/audio\>/', '<audio type="soundcloud">\1</audio>', $String);
非常感谢您的帮助......新年快乐!
好的,我会对此采纳你的言论......但请问你可以编辑你的问题,并清楚输入是什么,预期输出是什么? – Enissay
Mh ...我认为你是对的! :) 我刚编辑我的问题,对不起。 – user3131164
你检查我的答案了吗? “我必须在正则表达式的某个地方写”params“,这是什么意思,你也想捕获它吗? – Enissay