【发布时间】:2018-11-06 21:58:30
【问题描述】:
我正在尝试在 PHP 中操作多个字符串。我正在使用foreach 循环和if statements 提取数组数据。一些数组数据以缩写形式存储。我想将这些缩写转换为完整的单词。一个例子是缩写pwr,它代表power。该缩写可以在各种不同的上下文中找到。下面我将附上我的 PHP 代码及其各自的输出,您可以在其中看到可以找到 pwr 缩写的各种字符串。
PHP:
<?php
foreach ($finaltitle as $titlenumber => $titlename){
foreach ($techData as $tsnumber => $tsname){
if ($tsnumber == $titlenumber){
if(empty($tsname) or $tsname === '- TBD -') continue;
$finaltsdata = "<b>".$titlename." (".$tsnumber.") "."</b>: ".strtolower($tsname)."<br>";
echo $finaltsdata;
}
}
}
?>
输出:
Suspension Type - Front (105) : 4-link,
Suspension Type - Rear (106) : trapezoidal link,
Suspension Type - Front (Cont.) (107) : pwr-adjustable sport
Suspension Type - Rear (Cont.) (108) : pwr-adjustable sport
Front Tire Size (140) : p235/40yr18
Rear Tire Size (141) : p235/40yr18
Spare Tire Size (142) : p235/40yr18
Front Wheel Size (156) : 18 x 8.0
Rear Wheel Size (157) : 18 x 8.0
Spare Wheel Size (158) : 18 x 8.0
Front Wheel Material (165) : alloy
Rear Wheel Material (166) : alloy
Spare Wheel Material (167) : alloy
Steering Type (176) : pwr rack & pinion
Steering Ratio (:1), Overall (178) : 16.3
Turning Diameter - Curb to Curb (184) : 37.7
Brake Type (186) : pwr
注意缩写pwr 可以在各种不同的上下文中找到:单独、在一组单词之前、在破折号之前等。如何在我的foreach 代码中创建一个语句来转换所有提及从pwr 到power?
谢谢!
$array = [
'/\b(pwr|Pwr|powr)\b/i' => 'power',
];
$tsname = preg_replace(array_keys($array), $array);
foreach ($finaltitle as $titlenumber => $titlename){
foreach ($techData as $tsnumber => $tsname){
if ($tsnumber == $titlenumber){
if(empty($tsname) or $tsname === '- TBD -') continue;
$finaltsdata = "<b>".$titlename." (".$tsnumber.") "."</b>: ".$tsname."<br>";
echo $finaltsdata;
}
}
}
【问题讨论】:
-
尝试使用 str_replace :
strtolower(str_replace('pwr', 'power', $tsname)) -
我会使用 preg_replace 因为它允许您使用单词边界,例如
/\bpwr\b/我会创建一个像这样的数组['/\bpwr\b/' => 'power']然后使用preg_replace(array_keys($array), $array)简单,您可以添加更多 @987654338 @真的很容易..
标签: php if-statement foreach abbreviation