[英]php string replace after character #
我們使用以下代碼加載動態產品標題<?php echo $producttitle; ?>
<?php echo $producttitle; ?>
輸入可以是:
HP ProBook 450 G5 15.6英寸i5-8250U - 4LT51EA #ABB - 黑色
這一行是動態的,因此#之后的代碼可以改變,也可以是#ACC。
應該成為:
HP ProBook 450 G5 15.6“i5 - 4LT51EA - 黑色
這些產品標題可以包含類似#的值。 它始終顯示為#,沒有任何空格。 我們想要刪除值#直到下一個空格。
這些產品標題也可以包含15.6英寸的值,我們要用15.6英寸替換它。所以文字英寸應該替換為標志“。
我們還想將i5-8250U的值更改為i5。 但i5也可以是i3或i7。 所以它應該取代所有東西 - 直到下一個空間。
我們如何在此代碼中包含兩個替換?
我目前有以下內容:
<?php $trans = array(' inch' => '"'); ?>
<h1><?php echo strtr($producttitle, $trans); ?></h1>
但現在我需要包含#部分,我們如何實現這一目標?
你可能會這樣使用preg_replace並創建一個包含2個正則表達式的數組和一個包含2個替換的數組。
在替換中,您可以使用$1
來引用第一個捕獲組,以將其作為替換。
第一部分
\s+inch\s+(i[357])-\w+
\\s+inch\\s+
匹配1+空白字符, inch
,然后是1 +空格字符(為了不匹配換行符,您可以使用\\h+
而不是\\s
來匹配1+個水平空白字符) (i[357])
捕獲組以匹配i,然后是3,5或7 -
字面意思匹配 \\w+
匹配單詞字符的1+倍 用。。。來代替
" $1
第二部分
(\w+)#\w+
(\\w+)
捕獲與1個單詞字符匹配的組 #\\w+
匹配#
后跟1個單詞字符 用。。。來代替
$1
例如:
$string = 'HP ProBook 450 G5 15.6 inch i5-8250U - 4LT51EA#ABB - Black';
$find = array('/\s+inch\s+(i[357])-\w+/', '/(\w+)#\w+/');
$replace = array('" $1', '$1');
$result = preg_replace($find, $replace, $string);
echo $result; // HP ProBook 450 G5 15.6" i5 - 4LT51EA - Black
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.