Company logo
  • Jobs
  • Bootcamp
  • About Us
  • For professionals
    • Home
    • Jobs
    • Courses
    • Questions
    • Teachers
    • Bootcamp
  • For business
    • Home
    • Our process
    • Plans
    • Assessments
    • Payroll
    • Blog
    • Sales
    • Calculator

0

143
Views
How do you replace all numbers in a string with a defined character in PHP?

How would you replace all numbers in a string with a pre-defined character?

Replace each individual number with a dash "-".

$str = "John is 28 years old and donated $40.39!";

Desired output:

"John is -- years old and donated $--.--!"

I am assuming preg_replace() will be used but I am not sure how to target just numbers.

8 months ago · Santiago Trujillo
3 answers
Answer question

0

Simple solution using strtr(to translate all digits) and str_repeat functions:

$str = "John is 28 years old and donated $40.39!";
$result = strtr($str, '0123456789', str_repeat('-', 10));

print_r($result);

The output:

John is -- years old and donated $--.--!

As alternative approach you may also use array_fill function(to create "replace_pairs"):

$str = "John is 28 years old and donated $40.39!";
$result = strtr($str, '0123456789', array_fill(0, 10, '-'));

http://php.net/manual/en/function.strtr.php

8 months ago · Santiago Trujillo Report

0

PHP code demo

<?php

$str = "John is 28 years old and donated $40.39!";
echo preg_replace("/\d/", "-", $str);

OR:

<?php

$str = "John is 28 years old and donated $40.39!";
echo preg_replace("/[0-9]/", "-", $str);

Output: John is -- years old and donated $--.--!

8 months ago · Santiago Trujillo Report

0

You can also do this with a normal replace:

$input   = "John is 28 years old and donated $40.39!";
$numbers = str_split('1234567890');
$output  = str_replace($numbers,'-',$input);
echo $output;

just in case you were wondering. Code was tested and it works. The output is:

John is -- years old and donated $--.--!

No need for 'obscure' regular expressions. Do you remember where the slashes and braces go and why?

8 months ago · Santiago Trujillo Report
Answer question
Find remote jobs