0

我们的网站上有很多办公地点,每个地点都有一个主要电话号码 - 许多都输入了类似这样的区号:(800) 555-5555

这就是我需要他们所有的样子,不管它是如何输入的:800-555-5555

这就是我现在的位置

str_replace(array( '(', ')' ), '', $this->data['location_phone']);

虽然这删除了两个括号,但我真的只需要删除开头的括号并用破折号替换右括号。

4

4 回答 4

7

使用数组进行替换。

str_replace(array( '(', ')' ), array('', '-'), $this->data['location_phone']);

str_replace您可以在文档页面上阅读更多内容。

于 2014-06-25T17:19:49.760 回答
1

你可以做一些类似于你已经在做的事情..而不是同时替换()替换'',你可以替换(然后)分别替换-

str_replace(array('('), '', $this->data['location_phone']);

str_replace(array(')'), '-', $this->data['location_phone']);

或者更好的是,合并成一行(如其他答案所示):

str_replace(array( '(', ')' ), array('', '-'), $this->data['location_phone']);
于 2014-06-25T17:19:50.017 回答
1

这个答案似乎解决了preg_match& 数据重建的问题。但是该答案中发布的正则表达式对于此处描述的那种数据清理来说并不是那么好。

所以试试我放在一起的这个答案的变体,它使用了官方 PHP 文档中一篇文章中的一些很棒的正则表达式:

// Set test data.
$test_data = array();
$test_data[] = '1 800 555-5555';
$test_data[] = '1-800-555-5555';
$test_data[] = '800-555-5555';
$test_data[] = '(800) 555-5555';

// Set the regex.
$regex = '/^(?:1(?:[. -])?)?(?:\((?=\d{3}\)))?([2-9]\d{2})(?:(?<=\(\d{3})\))? ?(?:(?<=\d{3})[.-])?([2-9]\d{2})[. -]?(\d{4})(?: (?i:ext)\.? ?(\d{1,5}))?$/';

// Roll through the test data & process.
foreach ($test_data as $data) {
  if (preg_match($regex, $data, $matches)) {

    // Reconstruct the number based on the captured data.
    echo "New number is: " . $matches[1] . '-' . $matches[2] . '-' . $matches[3] . '<br />';

    // Dump the matches to check what is being captured.
    echo '<pre>';
    print_r($matches);
    echo '</pre>';

  }
}

清理后的结果(包括preg_match匹配项)将是:

New number is: 800-555-5555
Array
(
    [0] => 1 800 555-5555
    [1] => 800
    [2] => 555
    [3] => 5555
)
New number is: 800-555-5555
Array
(
    [0] => 1-800-555-5555
    [1] => 800
    [2] => 555
    [3] => 5555
)
New number is: 800-555-5555
Array
(
    [0] => 800-555-5555
    [1] => 800
    [2] => 555
    [3] => 5555
)
New number is: 800-555-5555
Array
(
    [0] => (800) 555-5555
    [1] => 800
    [2] => 555
    [3] => 5555
)
于 2014-06-25T17:21:25.120 回答
0

谢谢。我用这个作为电话号码来去掉所有的空格和()和 - 所以电话://1234567890

href=tel://".str_replace(array('(', ')','','-'), array('', '','',''), $row["ContactPhone"] ).">".$row["ContactPhone"]."

于 2017-05-03T05:08:07.633 回答