亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

從 href 中刪除雙引號

從 href 中刪除雙引號

PHP
慕的地8271018 2023-07-08 17:33:53
我有一個 html 字符串,需要從錨標記的 href 中刪除雙引號。$content = '<p style="abc" rel="blah blah"> Hello I am p </p> <a href="https://example.com/abc?name="xyz&123""></a>';應該返回$content = '<p style="abc" rel="blah blah"> Hello I am p </p> <a href="https://example.com/abc?name='xyz&123'"></a>';我努力了preg_replace('/<a\s+[^>]*href\s*=\s*"([^"]+)"[^>]*>/', '<a href="\1">', $content)但這會刪除錨標記中除 href 之外的所有屬性。無法找到可以在 href 中實際工作的東西正在尋找相同的 php 代碼。
查看完整描述

2 回答

?
侃侃爾雅

TA貢獻1801條經驗 獲得超16個贊

您可以嘗試:

(<a href=".*?)"(.*?)"(.*)

上述正則表達式的解釋:

  • (<a href=".*?)- 代表第一個捕獲組捕獲捕獲第一個之前的所有內容"。請注意,我使用了惰性匹配,這有助于完成此任務。

  • "-"從字面上匹配。

  • (.*?)- 表示第二個捕獲組捕獲xyz&123介于兩者之間的數據"。

  • (.*)- 代表第三個捕獲組,捕獲 后的所有內容"。

  • $1\'$2\'$3- 對于更換零件;將捕獲的組與單引號一起使用。

http://img1.sycdn.imooc.com//64a92da800019a6610450121.jpg

您可以在此處找到上述正則表達式的演示。

示例實現 inf php:


<?php

$re = '/(<a href=".*?)"(.*?)"(.*)/m';

$str = '<p style="abc" rel="blah blah"> Hello I am p </p> <a href="https://example.com/abc?name="xyz&123""></a>';

$subst = '$1\'$2\'$3';


$result = preg_replace($re, $subst, $str);


echo $result;

您可以在此處找到上述代碼的示例運行


查看完整回答
反對 回復 2023-07-08
?
jeck貓

TA貢獻1909條經驗 獲得超7個贊

我嘗試過preg_replace('/<a\s+[^>]*href\s*=\s*"([^"]+)"[^>]*>/', '<a href="\1">', $content)正則表達式。但這會刪除錨標記中除 href 之外的所有屬性。

也許更通用一些——一<a ...>開始就將所有這些東西排除在外?

沒有太多的 HTML 元素一href開始就具有屬性 - 即使您遇到具有這樣的href值的不同元素,它在那里也沒有意義,因此無論如何它也需要替換。

#href="(\S+)"#作為貪婪模式尋找并捕獲href="和之間最長的可能非空白字符串"。這給出了href="https://example.com/abc?name="xyz&123""完整匹配,以及https://example.com/abc?name="xyz&123"部分匹配。

讓我們將后者輸入str_replace以消除", 使用preg_replace

$content = preg_replace_callback('#href="(\S+)"#', function($m) {
  return 'href="'.str_replace('"', '', $m[1]).'"';
}, $content);


查看完整回答
反對 回復 2023-07-08
  • 2 回答
  • 0 關注
  • 196 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號